//package com.mycompany.mongo.dao;
//
//import java.util.List;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.mongodb.core.MongoTemplate;
//import org.springframework.data.mongodb.core.query.Criteria;
//import org.springframework.data.mongodb.core.query.Query;
//import org.springframework.data.mongodb.core.query.Update;
//
//public class MongoSupport<T> implements MongoIntf<T>{
//
//	private Logger logger = LoggerFactory.getLogger(MongoSupport.class);
//
//	@Autowired
//    public MongoTemplate mongoTemplate;
//
//    /**@Description
//     * 保存一个对象
//     */
//	@Override
//    public void save(T t){
//    	this.mongoTemplate.save(t);
//    }
//    /**@Description
//     * 查找对应id的对象,id对应Collection中记录的_id字段
//     */
//    public T queryById(Class<T> cls,String id) {
//        Query query = new Query();
//        Criteria criteria = Criteria.where("_id").is(id);
//        query.addCriteria(criteria);
//        logger.info(cls+"[Mongo]queryById:" + query);
//        return this.mongoTemplate.findOne(query, cls);
//    }
//    /**@Description
//     * 根据条件查询集合
//     */
//    public List<T> queryList(Class<T> cls,Query query){
//    	logger.info(cls+"[Mongo]queryList:" + query);
//        return this.mongoTemplate.find(query, cls);
//    }
//    /**@Description
//     * 通过条件查询单个实体
//     * 查询单个用的是mongoTemplate.findOne方法,查询多条的用的是mongoTemplate.find
//     */
//    public T queryOne(Class<T> cls,Query query){
//    	logger.info(cls+"[Mongo] queryOne:" + query);
//        return this.mongoTemplate.findOne(query, cls);
//    }
//    /**@Description
//     * 通过条件进行分页查询
//     * 类似mysql查询中的limit
//     */
//    public List<T> getPage(Class<T> cls,Query query, int start, int size){
//        query.skip(start);
//        query.limit(size);
//        List<T> lists = this.mongoTemplate.find(query, cls);
//        logger.info(cls+"[Mongo] queryPage:" + query + "(" + start +"," + size +")");
//        return lists;
//    }
//    /**@Description
//     * 根据条件查询库中符合记录的总数,为分页查询服务
//     */
//    public Long getPageCount(Class<T> cls,Query query){
//    	logger.info(cls+"[Mongo]queryPageCount:" + query);
//        return this.mongoTemplate.count(query, cls);
//    }
//
//    /**@Description
//     * 根据id删除对象
//     */
//    public void deleteById(Class<T> cls,String id){
//        Criteria criteria = Criteria.where("_id").in(id);
//        if(null!=criteria){
//            Query query = new Query(criteria);
//            if(null!=query && this.queryOne(cls,query)!=null){
//                this.mongoTemplate.remove(this.queryOne(cls,query));
//                logger.info(cls+"[Mongo]deleteById:" + query);
//            }
//        }
//    }
//    /**@Description
//     * 删除对象
//     */
//    public void delete(T t){
//        this.mongoTemplate.remove(t);
//        logger.info("[Mongo]delete:" + t);
//    }
//    /**@Description
//     * 更新指定id的属性值
//     */
//    public void updateFirst(Class<T> cls,String id, String objName, String objValue){
//        Criteria criteria = Criteria.where("_id").in(id);
//        if(null!=criteria){
//            Query query = new Query(criteria);
//            if(null!=query && this.queryOne(cls,query)!=null){
//            	 Update update=new Update();
//            	 update.set(objName,objValue);
//                 this.mongoTemplate.updateFirst(query,update,cls);
//                 logger.info(cls+"[Mongo]updateFirst:query(" + query + "),update(" + update + ")");
//            }
//        }
//    }
//    /**
//     *  Created on 2017年3月27日
//     * <p>Discription:[查找更新,如果没有找到符合的记录,则将更新的记录插入库中]</p>
//     */
//    public void updateInser(Class<T> cls,Query query, Update update){
//    	logger.info(cls+"[Mongo]updateInser:query(" + query + "),update(" + update + ")");
//        this.mongoTemplate.upsert(query, update, cls);
//    }
//
//}
